# 集合的定义和操作
# 集合——不支持元素重复,不支持下标索引访问
# 定义集合字面量—— {元素,元素,元素,...,元素}
# 定义集合变量—— 变量 = {元素,元素,元素,...,元素}
# 定义空集合—— 变量名称 = set()

# 定义集合
my_set = {"船只教育","黑马程序员","itheima","船只教育","黑马程序员","itheima","船只教育","黑马程序员","itheima"}
my_set_empty = {}   # 定义空集合
print(f"my_set的内容是:{my_set},类型是:{type(my_set)}")
print(f"my_set_empty的内容是:{my_set_empty},类型是:{type(my_set_empty)}")

# 添加新元素
my_set.add('python')
my_set.add("船只教育")
print(f"添加元素后,集合my_set的内容是:{my_set}")

# 移除元素
my_set.remove("黑马程序员")
print(f"移除元素后,集合my_set的内容是:{my_set}")

# 随机取出一个元素
my_set.add("黑马程序员")
print(f"添加元素后,集合my_set的内容是:{my_set}")
element = my_set.pop()
print(f"随机取出一个元素后的集合是:{my_set};随机取出的元素是:{element}")

# 清空集合
my_set.clear()
print(f"清空集合后，集合的内容是:{my_set}")

# 取两个集合的差集
# 语法:集合1.difference(集合2)
# 功能:取出集合1和集合2的差集
# 结果:得到一个新集合，集合1和集合2不变
set_1 = {1,2,3,5}
set_2 = {1,2,4,7}
sub_set = set_1.difference(set_2)
print(f"取差集之后的set_1 = {set_1},set_2 = {set_2},差集sub_set = {sub_set}")

# 消除2个集合的差集
# 语法:集合1.difference_update(集合2)
# 功能:对比集合1和集合2，在集合1内，删除和集合2相同的元素
# 结果:集合1被修改，集合2不变
set_1 = {1,2,3,5}
set_2 = {1,2,4,7}
set_1.difference_update(set_2)
print(f"set_1 = {set_1}")
print(f"set_2 = {set_2}")

# 2个集合合并为1个集合
# 语法:集合1.union(集合2)
# 功能:将集合1和集合2组合成新集合
# 结果:得到新集合，集合1和集合2不变
set_1 = {1,2,3,5}
set_2 = {1,2,4,7}
add_set = set_1.union(set_2)
print(f"set_1 = {set_1}")
print(f"set_2 = {set_2}")
print(f"add_set = {add_set}")

# 统计集合元素数量
count = len(add_set)
print(f"集合add_set中有 {count} 个元素")

# 集合的遍历——不支持while循环
my_set = {"船只教育","黑马程序员","itheima","船只教育","黑马程序员","itheima","船只教育","黑马程序员","itheima"}
for element in my_set:
    print(f"集合my_set中的元素有:{element}")
